package com.juezhuo.ocrs.common.dao.common;

import org.springframework.dao.DataAccessException;

import java.io.Serializable;
import java.util.List;

/**
 * @author badqiu
 */
public interface EntityDao<E, PK extends Serializable> {

    public Object getById(PK id) throws DataAccessException;

    public int deleteById(PK id) throws DataAccessException;

    /**
     * 插入数据
     */
    public int save(E entity) throws DataAccessException;

    /**
     * 更新数据
     */
    public int update(E entity) throws DataAccessException;

    /**
     * 根据id检查是否插入或是更新数据
     */
    public int saveOrUpdate(E entity) throws DataAccessException;

    public boolean isUnique(E entity, String uniquePropertyNames) throws DataAccessException;

    /**
     * 用于hibernate.flush() 有些dao实现不需要实现此类
     */
    public void flush() throws DataAccessException;

    public List<E> findAll() throws DataAccessException;

}